import request from "@/utils/request";

// const USER_BASE_URL = "/api/v1/users";
const USER_BASE_URL = "/core/stockMove";

const materialQueryApi = {
  /**
   * 查询用料
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: materialQueryPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, PageResult<materialQueryPageQuery[]>>({
      url: `${USER_BASE_URL}/getStockMoveList?object=${query}`,
      method: "get",
    });
  },

  /**
   * 查询移库详情
   */
  getDetail(parentCode: string) {
    return request<any, any>({
      url: `${USER_BASE_URL}/getStockMoveDetailByCode?parentCode=${parentCode}`,
      method: "get",
    });
  },

  /**
   * 修改备料
   * @param data 修改数据

   */
  update(data: materialQueryPageVO) {
    return request<any, any>({
      url: `${USER_BASE_URL}/saveOrUpdateStockDetailMove`,
      method: "post",
      data,
    });
  },
  /**
   * 删除备料
   * @param data 修改数据

   */
  delete(data: materialQueryPageVO) {
    return request<any, any>({
      url: `${USER_BASE_URL}/delStockMove`,
      method: "post",
      data,
    });
  },

  /**
   * 强制完成移库
   */
  forceComplete(id: number) {
    return request<any, any>({
      url: `${USER_BASE_URL}/forceStockMove`,
      method: "post",
      data: { id },
    });
  },
};

export default materialQueryApi;

/*用料*/
export interface materialQueryPageQuery extends PageQuery {
  /* 生产单ID*/
  batch?: string;
  /* 产品编号*/
  productCode?: string;
  /* 物料名称*/
  sourceCode?: string;

  //移库状态
  status?: number;
  // 移库单号
  code?: string;
  // 仓管
  warehouseFrom?: string;
  // 生产日期
  timeScopes?: string[];
}

/** 生产单主表信息 */
export interface materialQueryPageVO {
  // 分页大小
  pageSize?: number;

  // 当前页码
  pageNum?: number;

  // 时间范围
  timeScopes?: any; // 需要根据实际业务逻辑确定具体类型

  // 唯一标识
  id?: number;

  // 代码
  code?: string;

  // 分类
  category?: number;

  // 产品代码
  productCode?: string;

  // 产品名称
  productName?: string;

  // 仓库来源
  warehouseFrom?: any; // 需要根据实际业务逻辑确定具体类型

  // 仓库来源名称
  warehouseNameFrom?: string;

  // 仓库去向
  warehouseTo?: any; // 需要根据实际业务逻辑确定具体类型

  // 仓库去向名称
  warehouseNameTo?: string;

  // 批次
  batch?: string;

  // 总数量
  totalQty?: number;

  // 移动数量
  moveQty?: number;

  // 单位
  unit?: string;

  // 状态
  status?: number;

  // 移动日期
  moveDate?: Date | string; // 可以是Date对象或字符串，根据实际使用场景确定

  // 移动用户
  moveUser?: any; // 需要根据实际业务逻辑确定具体类型，可能是用户ID或对象

  // 移动用户名称
  moveName?: string;

  //生产日期
  prodDate?: string;

  // 创建时间
  createTime?: string; // 假设为字符串格式的时间戳

  // 创建用户
  createUser?: number; // 假设为用户ID

  // 创建用户名称
  createName?: string;

  // 修改时间
  modifyTime?: string; // 假设为字符串格式的时间戳

  // 修改用户
  modifyUser?: number; // 假设为用户ID

  // 修改用户名称
  modifyName?: string;

  // 是否删除
  isDelete?: number;

  // 来源名称
  sourceName?: string;
}
